package com.oazon.moco.lan.core.http.bean;

import java.util.ArrayList;
import java.util.List;

import com.oazon.moco.bean.Metadata;


public abstract class AbsInstance {

	private int instanceID;
	private TransportState transportState;
	private CurrentPlayMode currentPlayMode;
	
	// [0,1]
	private int currentCrossfadeMode;
	
	//MP中当前队列总数量
	private int numberOfTracks;
	
	// 当前播放到什么相对时刻
	private String relTime;
	
	//当前播放到MP的第几首
	private int currentTrack;
	
	// 暂定=0
	private int currentSection;
	
	// 当前播放track的itemID
	private String currentItemID;
	
	//音乐服务的ID，和itemID一起可以唯一标示某个具体内容
	private String currentServiceID;
	
	//当前正播放单曲的Track的URI
	private String currentTrackURI;
	
	//当前正播放单曲的Track时长
	private String currentTrackDuration;
	
	private Metadata currentTrackMetaData = new Metadata();
	
	// 下一首单曲的URI
	private String nextTrackURI;
	
	//下一首单曲的TrackMetaData
	private Metadata nextTrackMetaData = new Metadata();
	
	// 暂定=NETWORK
	private String playbackStorageMedium;
	
	//  如果播放MP_QUEUE，则为 x-o2-queue:UUID_OF_MP#0
	//  如果播放Smart_Radio，则和SetAVTransportURI时的CurrentURI保持一致，也就是:
	//  "x-o2api-radio:<Smart Radio ItemID>?sid=xxx"
	private String AVTransportURI;
	
	// 如果为MP_QUEUE，则为空
    // 如果为SmartRadio，则见AVTransportURIMetaData的说明
	private TransportURIMetaData AVTransportURIMetaData = new TransportURIMetaData();
	
	// "Set, Play, Stop, Pause, Seek, Next, Previous", MC可选的动作
	private String currentTransportActions;
	
	// "SHUFFLE, REPEAT, CROSSFADE" MC可选的播放模式
	private String currentValidPlayModes;
	
	private List<Volume> volume = new ArrayList<Volume>();
	
	public String getCurrentItemID() {
		return currentItemID;
	}

	public void setCurrentItemID(String currentItemID) {
		this.currentItemID = currentItemID;
	}

	public String getCurrentServiceID() {
		return currentServiceID;
	}

	public void setCurrentServiceID(String currentServiceID) {
		this.currentServiceID = currentServiceID;
	}

	public List<Volume> getVolume() {
		return volume;
	}

	public void setVolume(List<Volume> volume) {
		this.volume = volume;
	}

	public int getInstanceID() {
		return instanceID;
	}

	public void setInstanceID(int instanceID) {
		this.instanceID = instanceID;
	}

	public TransportState getTransportState() {
		return transportState;
	}

	public void setTransportState(TransportState transportState) {
		this.transportState = transportState;
	}

	public CurrentPlayMode getCurrentPlayMode() {
		return currentPlayMode;
	}

	public void setCurrentPlayMode(CurrentPlayMode currentPlayMode) {
		this.currentPlayMode = currentPlayMode;
	}

	public int getCurrentCrossfadeMode() {
		return currentCrossfadeMode;
	}

	public void setCurrentCrossfadeMode(int currentCrossfadeMode) {
		this.currentCrossfadeMode = currentCrossfadeMode;
	}

	public int getNumberOfTracks() {
		return numberOfTracks;
	}

	public void setNumberOfTracks(int numberOfTracks) {
		this.numberOfTracks = numberOfTracks;
	}

	public String getRelTime() {
		return relTime;
	}

	public void setRelTime(String relTime) {
		this.relTime = relTime;
	}

	public int getCurrentTrack() {
		return currentTrack;
	}

	public void setCurrentTrack(int currentTrack) {
		this.currentTrack = currentTrack;
	}

	public int getCurrentSection() {
		return currentSection;
	}

	public void setCurrentSection(int currentSection) {
		this.currentSection = currentSection;
	}

	public String getCurrentTrackURI() {
		return currentTrackURI;
	}

	public void setCurrentTrackURI(String currentTrackURI) {
		this.currentTrackURI = currentTrackURI;
	}

	public String getCurrentTrackDuration() {
		return currentTrackDuration;
	}

	public void setCurrentTrackDuration(String currentTrackDuration) {
		this.currentTrackDuration = currentTrackDuration;
	}

	public Metadata getCurrentTrackMetaData() {
		return currentTrackMetaData;
	}

	public void setCurrentTrackMetaData(Metadata currentTrackMetaData) {
		this.currentTrackMetaData = currentTrackMetaData;
	}

	public String getNextTrackURI() {
		return nextTrackURI;
	}

	public void setNextTrackURI(String nextTrackURI) {
		this.nextTrackURI = nextTrackURI;
	}

	public Metadata getNextTrackMetaData() {
		return nextTrackMetaData;
	}

	public void setNextTrackMetaData(Metadata nextTrackMetaData) {
		this.nextTrackMetaData = nextTrackMetaData;
	}

	public String getPlaybackStorageMedium() {
		return playbackStorageMedium;
	}

	public void setPlaybackStorageMedium(String playbackStorageMedium) {
		this.playbackStorageMedium = playbackStorageMedium;
	}

	public String getAVTransportURI() {
		return AVTransportURI;
	}

	public void setAVTransportURI(String aVTransportURI) {
		AVTransportURI = aVTransportURI;
	}

	public TransportURIMetaData getAVTransportURIMetaData() {
		return AVTransportURIMetaData;
	}

	public void setAVTransportURIMetaData(
			TransportURIMetaData aVTransportURIMetaData) {
		AVTransportURIMetaData = aVTransportURIMetaData;
	}

	public String getCurrentTransportActions() {
		return currentTransportActions;
	}

	public void setCurrentTransportActions(String currentTransportActions) {
		this.currentTransportActions = currentTransportActions;
	}

	public String getCurrentValidPlayModes() {
		return currentValidPlayModes;
	}

	public void setCurrentValidPlayModes(String currentValidPlayModes) {
		this.currentValidPlayModes = currentValidPlayModes;
	}

}
